// 这里应该是 Vue 核心方法
import Vue from './instance/index'
// 初始化全局的API
import { initGlobalAPI } from './global-api/index'
// 获取是否为SSR环境
import { isServerRendering } from 'core/util/env'
// 创建rendrer函数的上下文
import { FunctionalRenderContext } from 'core/vdom/create-functional-component'

// 初始化全局API
initGlobalAPI(Vue)

// 为Vue原型增加 $isServer 属性，用于判断是否为服务器渲染环境
Object.defineProperty(Vue.prototype, '$isServer', {
  get: isServerRendering // 获取是否为SSR环境
})

// 为Vue原型增加 $ssrContext 属性
Object.defineProperty(Vue.prototype, '$ssrContext', {
  get () {
    /* istanbul ignore next */
    return this.$vnode && this.$vnode.ssrContext
  }
})

// expose FunctionalRenderContext for ssr runtime helper installation
// TODO ？？？
Object.defineProperty(Vue, 'FunctionalRenderContext', {
  value: FunctionalRenderContext
})

// 存储Vue的版本
Vue.version = '__VERSION__'

export default Vue
